home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / CONTRSRC.ZIP / SRC / GOPI / TRANSF2.INC < prev    next >
Encoding:
Text File  |  1994-11-17  |  3.3 KB  |  135 lines

  1. ;     transf2a               ;rotation z
  2. ;     transf2b               ;rotation x
  3. ;     transf2c               ;rotation y
  4. ;*****************************************************************************
  5. transf2a  macro
  6.           local bcl1
  7.           MPUSH eax,bx,cx,edx,si,edi,ebp,ds,gs
  8. ;**************
  9. ;rotation z
  10. ;x:=x*cos-y*sin  /256
  11. ;y:=x*sin+y*cos  /256
  12. ;z:=z
  13. ;bousille:=ax,bx,cx,dx,di,si
  14. ;optimize en ne calculant pas le z
  15. ;**************
  16.          mov  cx,nbdots
  17.          xor  bx,bx
  18.          mov  si,agl
  19.          push ds
  20.          push gs
  21.          pop  ds
  22.          pop  gs 
  23. bcl1:
  24.    
  25.          mov    edi,DWORD PTR xv[bx]
  26.          imul   edi,DWORD PTR gs:[cos+si]   ;edi=cos*x
  27.  
  28.          mov    eax,DWORD PTR yv[bx]
  29.          imul   eax,DWORD PTR gs:[sin+si]   ;eax=sin*y
  30.  
  31.          sub  edi,eax           ;edi:=edi-eax
  32.          sar  edi,8             ;edi:=edi /256
  33.          mov  ebp,edi           ;save:=x
  34.  
  35.          mov    edi,DWORD PTR xv[bx]
  36.          imul   edi,DWORD PTR gs:[sin+si]   ;edi=sin*x
  37.  
  38.          mov    eax,DWORD PTR yv[bx]
  39.          imul   eax,DWORD PTR gs:[cos+si]   ;eax=cos*y
  40.  
  41.          add  edi,eax           ;edi=edi+eax
  42.          sar  edi,8             ;edi=edi /256
  43.          mov  DWORD PTR yv[bx],edi ;y=ok
  44.  
  45.          mov  DWORD PTR xv[bx],ebp ;x=ok
  46.  
  47.          add  bx,4
  48.  
  49.          dec  cx
  50.          jnz  bcl1              ;+ rapide que le loop ?
  51.       
  52.          MPOP eax,bx,cx,edx,si,edi,ebp,ds,gs
  53.  
  54. endm
  55. ;*****************************************************************************
  56. transf2b  macro
  57.           local bcl1
  58.           MPUSH eax,bx,cx,edx,si,edi,ds,gs
  59.  
  60. ;**************
  61. ;rotation x
  62. ;x:=x
  63. ;y:=y*cos-z*sin  /256
  64. ;z:=y*sin+z*cos  /256
  65. ;bousille:=ax,bx,cx,dx,di,si
  66. ;optimize en ne calculant pas le z
  67. ;**************
  68.          mov  cx,nbdots
  69.          xor  bx,bx
  70.          mov  si,agl
  71.          push ds
  72.          push gs
  73.          pop  ds
  74.          pop  gs
  75. bcl1:
  76.  
  77.          mov    edi,DWORD PTR yv[bx]
  78.          imul   edi,DWORD PTR gs:[cos+si]   ;edi=cos*y
  79.  
  80.          mov    eax,DWORD PTR zv[bx]
  81.          imul   eax,DWORD PTR gs:[sin+si]   ;eax=sin*z
  82.  
  83.          sub  edi,eax           ;edi=edi-eax
  84.          sar  edi,8             ;edi=edi /256
  85.          mov  DWORD PTR yv[bx],edi;y=ok
  86.  
  87.          add  bx,4
  88.  
  89.          dec  cx
  90.          jnz  bcl1
  91.  
  92.          MPOP eax,bx,cx,edx,si,edi,ds,gs
  93.  
  94. endm
  95. ;*****************************************************************************
  96. transf2c  macro
  97.           local bcl1
  98.           MPUSH eax,bx,cx,edx,si,edi,ds,gs
  99.  
  100. ;**************
  101. ;rotation y
  102. ;x:=x*cos-z*sin  /256
  103. ;y:=y
  104. ;z:=x*sin+z*cos  /256
  105. ;bousille:=ax,bx,cx,dx,di,si
  106. ;optimize en ne calculant pas le z
  107. ;**************
  108.          mov  cx,nbdots
  109.          xor  bx,bx
  110.          mov  si,agl
  111.          push ds
  112.          push gs
  113.          pop  ds
  114.          pop  gs
  115. bcl1:
  116.          mov    edi,DWORD PTR xv[bx]
  117.          imul   edi,DWORD PTR gs:[cos+si]   ;edi=cos*x
  118.         
  119.          mov    eax,DWORD PTR zv[bx]
  120.          imul   eax,DWORD PTR gs:[sin+si]   ;eax=sin*z
  121.       
  122.          sub  edi,eax           ;edi=edi-eax
  123.          sar  edi,8             ;edi=edi /256
  124.          mov  DWORD PTR xv[bx],edi;x=ok
  125.  
  126.          add  bx,4
  127.  
  128.          dec  cx
  129.          jnz  bcl1
  130.  
  131.          MPOP eax,bx,cx,edx,si,edi,ds,gs
  132.  
  133. endm
  134. ;*****************************************************************************
  135.